import java.util.ArrayList;
import java.util.HashMap;

public class FirstOneNum {
    /**
     * 在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置,
     * 如果没有则返回 -1（需要区分大小写）.（从0开始计数）
     */
    public int FirstNotRepeatingChar(String str) {
        HashMap<Character,Integer> hashMap = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            if (hashMap.containsKey(str.charAt(i))) {
                hashMap.put(str.charAt(i),hashMap.get(str.charAt(i))+1);
            }else {
                hashMap.put(str.charAt(i),1);
            }
        }
        for (int i = 0;i < str.length();i++) {
            if (hashMap.get(str.charAt(i)) == 1) {
                return i;
            }
        }
        return -1;
    }
    /**
     * 一个整型数组里除了两个数字只出现一次，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
     * 提示：输出时按非降序排列。
     * 示例1
     * 输入： [1,4,1,6]
     * 返回值：[4,6]
     * 说明：
     * 返回的结果中较小的数排在前面
     */
    public int[] FindNumsAppearOnce (int[] array) {
        HashMap<Integer,Integer> hashmap = new HashMap<>();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < array.length; i++) {
            if (hashmap.containsKey(array[i])) {
                hashmap.put(array[i],hashmap.get(array[i]) + 1);
            }else {
                hashmap.put(array[i],1);
            }
        }
        for (int i = 0;i < array.length;i++) {
            if (hashmap.get(array[i]) == 1) {
                list.add(array[i]);
            }
        }
        if (list.get(0) < list.get(1)) {
            return new int[]{list.get(0) , list.get(1)};
        }else {
            return new int[]{list.get(1) , list.get(0)};
        }
    }
}
